package cn.iocoder.yudao.module.member.dal.dataobject.user;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 会员用户 DO
 *
 * @author doock
 */
@TableName(value = "member_user", autoResultMap = true)
@KeySequence("member_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberUserDO extends BaseDO {

    /**
     * 编号
     */
    @TableId
    private Long id;
    /**
     * 手机号
     */
    private String mobile;
    /**
     * 密码
     */
    private String password;
    /**
     * 状态
     */
    private Integer status;
    /**
     * 类型,0-个人用户 1-公司用户
     */
    private Integer type;
    /**
     * 注册 IP
     */
    private String registerIp;
    /**
     * 注册终端
     */
    private Integer registerTerminal;
    /**
     * 最后登录IP
     */
    private String loginIp;
    /**
     * 最后登录时间
     */
    private LocalDateTime loginDate;
    /**
     * 用户昵称
     */
    private String nickname;
    /**
     * 头像
     */
    private String avatar;
    /**
     * 真实名字
     */
    private String name;
    /**
     * 用户性别
     */
    private Integer sex;
    /**
     * 所在地
     */
    private Long areaId;
    /**
     * 出生日期
     */
    private LocalDateTime birthday;
    /**
     * 会员备注
     */
    private String mark;
    /**
     * 积分
     */
    private Long point;
    /**
     * 可用余额
     */
    private BigDecimal balance;
    /**
     * 用户标签编号列表，以逗号分隔
     */
    @TableField(typeHandler = LongListTypeHandler.class)
    private List<Long> tagIds;

    /**
     * 等级编号
     */
    private Long levelId;
    /**
     * 经验
     */
    private Integer experience;
    /**
     * 用户分组编号
     */
    private Long groupId;
    /**
     * 支付密码
     */
    private String payPassword;
    /**
     * 银行卡手机号
     */
    private String bankMobile;
    /**
     * 银行卡号
     */
    private String bankId;
    /**
     * 身份证号
     */
    private String identityId;
    /**
     * 身份证照片
     */
    private String identityPicFont;
    /**
     * 身份证照片后
     */
    private String identityPicBack;
    /**
     * 银行卡照片
     */
    private String bankPic;

    private String shopName;
    private String shopDesc;
    private String shopAddress;
    private String socialCreditId;
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> businessLicensePic;
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> shopPic;

}